모의해킹
피버팅과터널링_16_RDP 터널링
작성자 : Heehyeon Yoo|2025-12-19
# 모의해킹# PNT# RDP# SocksOverRDP# DVC
1. 개요
RDP 터널링(RDP Tunneling)은 윈도우 환경에서의 주요 원격 접속 프로토콜인 RDP(Remote Desktop Protocol, TCP 3389) 세션을 활용하여, 그 내부에서 SOCKS 프록시 터널을 생성하는 기법이다.
내부망 방화벽이 TCP/UDP 등 대부분의 아웃바운드/인바운드 트래픽을 차단하지만, 관리 목적의 RDP 트래픽만 허용하는 경우에 매우 유용하다. 공격자는 이미 확보한 RDP 세션(피벗 호스트와의 연결)을 통해, 추가적인 포트 오픈 없이도 피벗 호스트 너머의 네트워크로 접근할 수 있다.
2. 동작 원리: RDP Dynamic Virtual Channels (DVC)
마이크로소프트의 RDP 프로토콜은 화면 전송 외에도 클립보드 공유, 파일 전송, 오디오 리다이렉션 등 다양한 기능을 제공하기 위해 가상 채널(Virtual Channels)이라는 개념을 사용한다.
RDP 터널링 도구인 SocksOverRDP는 이 DVC 기능을 악용한다.
- DVC 채널 생성: 공격자(RDP 클라이언트)와 피벗 호스트(RDP 서버) 간에 데이터 전송을 위한 사설 가상 채널을 생성한다.
- SOCKS 프록시 바인딩: 공격자 측의 로컬 포트(예: 1080)를 SOCKS 리스너로 바인딩한다.
- 트래픽 캡슐화: 공격자가 1080 포트로 보낸 트래픽은 RDP DVC 채널을 통해 피벗 호스트로 전달된다.
- 릴레이: 피벗 호스트의 에이전트(
SocksOverRDP-Server.exe)는 전달받은 패킷을 내부망으로 릴레이한다.
즉, 외부에서 볼 때는 오직 RDP 트래픽(3389)만 발생하는 것처럼 보인다.
3. 실습: SocksOverRDP 및 Proxifier
이 기술은 SocksOverRDP라는 오픈소스 도구와 Proxifier를 결합하여 구현한다.
3.1 준비 단계
- 공격자 (Client):
SocksOverRDP-Plugin.dll을 등록하고, 레지스트 설정을 통해 RDP 클라이언트가 해당 플러그인을 로드하도록 한다. - 피벗 호스트 (Server):
SocksOverRDP-Server.exe파일을 업로드해 둔다.
3.2 실행 절차
- RDP 접속: 공격자는 피벗 호스트(
10.1.20.20)로 RDP 접속을 수행한다. 이때 "SocksOverRDP Plugin is enabled"라는 팝업이 뜨면 플러그인이 정상 로드된 것이다. - 서버 실행: 피벗 호스트의 RDP 세션 내에서
SocksOverRDP-Server.exe를 관리자 권한으로 실행한다. 이제 터널이 수립되었다. - Proxifier 설정:
- 공격자 PC에서
Proxifier를 실행한다. - Proxy Server:
127.0.0.1:1080(SOCKS5)를 추가한다. - Rule: 타겟 내부망(
10.1.30.0/24)으로 가는 트래픽이 위 프록시를 타도록 설정한다.
- 공격자 PC에서
3.3 피버팅
이제 공격자의 PC에서 mstsc(원격 데스크톱)나 firefox를 실행하여 내부망의 깊숙한 곳(10.1.30.50)으로 접속하면, 트래픽은 Proxifier -> Local SOCKS(1080) -> RDP Tunnel -> Pivot Host -> Target 순으로 전달된다.
4. OpsSec
- 탐지 난이도: RDP 트래픽 자체는 암호화되어 있고 기업 내부에서 흔히 발생하므로, 단순 패킷 감청으로는 터널링 여부를 식별하기 어렵다.
- 호스트 기반 탐지: 피벗 호스트에서 실행되는
SocksOverRDP-Server.exe프로세스나, RDP 서비스와 연동된 비표준 DLL(SocksOverRDP-Plugin.dll) 로드 행위는 EDR(Endpoint Detection and Response) 솔루션에 의해 탐지될 수 있다.